/**
 *
 *
 * @export
 * @param {*} vm  实列
 * @param {*} __get__
 * @param {*} __set__
 * @return {*}
 */
export function reactive(vm, __get__, __set__) {
  const _data = vm.$data; //变量存一下 不然设置的时候 会栈溢出
  for (const key in _data) {
    // vm ？  这里相当于直接在实列上绑定的 数据 key set get
    Object.defineProperty(vm, key, {
      get() {
        console.log("initData get get ", key);
        __get__(key, _data[key]);
        return _data[key];
      },
      set(newValue) {
        const oldValue = _data[key];
        console.log("initData set set", key, newValue);
        if (newValue == oldValue) return;
        _data[key] = newValue;
        __set__(key, newValue, oldValue);
      },
    });
  }
}
